class C:

    def __init__(self, name, age):
        self.name = name
        self.__age = age


# 内置函数 hasattr()：判断是否存在属性
c = C("小甲鱼", 18)
print(hasattr(c, 'name'))  # True
print(hasattr(c, 'age'))  # False

# 内置函数getattr()：获取属性的值
print(getattr(c, 'name'))  # 小甲鱼
# print(getattr(c, 'age'))  # AttributeError: 'C' object has no attribute 'age'

# 通过属性名字改编去访问
print(getattr(c, '_C__age'))  # 18

# 内置函数setattr()：设置属性的值
setattr(c, 'name', '张三丰')
print(c.name)  # 张三丰
setattr(c, 'age', 1000)
print(c.age)  # 1000
print(c._C__age)  # 18

# 内置函数delattr()：删除属性的值
print(hasattr(c, 'age'))  # True
delattr(c, 'age')
print(hasattr(c, 'age'))  # False

# hasattr,getattr,setattr,delattr这几个内置函数，均有对应的魔法方法

